﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Core.Base;
using ERP.BusinessEntities;
using System.Data;
using Core;
using Utilities;

namespace MainApp.Modules.SO
{
    public class SOEntity: BaseEntity
    {
        SGVList<ARSOItemsInfo> lstARSOItems = new SGVList<ARSOItemsInfo>();

        public override void InitModuleObjects()
        {
            AddMainObject("ARSOs", new ARSOsInfo());
        }

        public override void InitLists()
        {
            base.InitLists();

            lstARSOItems = new SGVList<ARSOItemsInfo>();
            lstARSOItems.InitList(this, "ARSOs", "ARSOItems", "FK_ARSOs_ID");

            lstARSOItems.Binding("MainScreen", "ARSOItemsGridView");
        }

        public override void BeforeSaveList()
        {
            base.BeforeSaveList();

            ARSOsInfo SO = (ARSOsInfo)MainObject;
            if (SO == null) return;

            DataSet dsSOItems = AppContext.SOItemCtrl.GetAllObjectByColumnValue("FK_ARSOs_ID", SO.ID);
            if (dsSOItems != null && dsSOItems.Tables.Count > 0)
            {
                foreach (DataRow drSOItem in dsSOItems.Tables[0].Rows)
                {
                    ARSOItemsInfo SOItem = (ARSOItemsInfo)AppContext.SOItemCtrl.GetObjectFromDataRow(drSOItem);
                    if (SOItem != null)
                        Inventory.UpdateInventory(InventoryDirection.Out, InventoryType.SO, SOItem.FK_ICProducts_ID, SOItem.FK_ICStocks_ID,
                            SOItem.BatchNo, SOItem.LotNo, SOItem.SerialNo, SOItem.Qty);

                }
            }

        }

        public override void AfterSaveList()
        {
            base.AfterSaveList();

            ARSOsInfo SO = (ARSOsInfo)MainObject;
            if (SO == null) return;

            DataSet dsSOItems = AppContext.SOItemCtrl.GetAllObjectByColumnValue("FK_ARSOs_ID", SO.ID);
            if (dsSOItems != null && dsSOItems.Tables.Count > 0)
            {
                foreach (DataRow drSOItem in dsSOItems.Tables[0].Rows)
                {
                    ARSOItemsInfo SOItem = (ARSOItemsInfo)AppContext.SOItemCtrl.GetObjectFromDataRow(drSOItem);
                    if (SOItem != null)
                        Inventory.UpdateInventory(InventoryDirection.In, InventoryType.SO, SOItem.FK_ICProducts_ID, SOItem.FK_ICStocks_ID,
                            SOItem.BatchNo, SOItem.LotNo, SOItem.SerialNo, SOItem.Qty);

                }
            }

        }
    }
}
